When developing and deploying a new application or system on a cloud or private data center, several problems arise. Applications and systems contain bottlenecks that constrain performance. Furthermore, sizing the application or system efficiently in terms of computing resources, parallelization, or other aspects has to be done carefully.
Typically, a set of benchmark tests are performed. These benchmark tests can be composed of industry standard software tests to determine the performance levels of the system. The benchmark can also compose a set of inputs and expected outputs to test the performance of a software system. Pre-production testbeds can be a cost ineffective solution. These testbeds can require dedicated infrastructure and trained teams. Furthermore, standard benchmarks are broadly applicable and are not specifically tailored for the system or application under consideration. The time, cost, and effort required often make such benchmarking beyond the reach of application developer or owner. For example, an application developer may need to decide on which cloud service provider's infrastructure to use and how to configure an application to run on the infrastructure in a cost effective way. The application developer may also need to decide on which resources to use for application deployment in such a cloud brokerage scenario. In this scenario, it may be too cost prohibitive for a cloud broker to benchmark the application directly against all the providers. Rather, a method allowing to accurately predict performance of an application at a given provider infrastructure without actually performing full testing is needed. That is, there is a need for a method that can predict the performance of an application accurately.